import axios from "axios"
import {Message} from "element-ui"
import Qs from "qs"
import store from "@/store"

// axios.defaults.baseURL = "http://api.test"
axios.defaults.baseURL = "http://api.8888168.xyz"
const service = axios.create({
  // baseURL: process.env.BASE_API, // api的base_url 如果前端跟后端不在同一个服务器上，可以使用
  // baseURL: "http://api.8888168.xyz", // api的base_url 如果前端跟后端不在同一个服务器上，可以使用
  timeout: 15000 // 请求超时时间
})

//这是post请求，可以直接发送对象
service.defaults.transformRequest = [(data) => {
  return Qs.stringify(data)
}]

// 可以在请求头添加对应信息
service.interceptors.request.use(config => {
  if (store.getters.getToken) {
    config.headers["Authorization"] = store.getters.getToken // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  return config
}, error => {
  Promise.reject(error)
})


/**
 * respone拦截器
 * 对请求返回的错误进统一处理
 */
service.interceptors.response.use(
  response => {
    /**
     * 对接口请求成功返回的错误进统一处理
     */
    const res = response.data
    // code大于40000的为全局错误码，
    if (res.code > 0) {
      Message({
        message: res.msg ? res.msg : res.info,
        type: "error",
        duration: 5 * 1000
      })
      return Promise.reject(res.message)
    }
    // code为0视为正常，也有一些局部需要为1或者2，然后到页面具体处理的
    if (!response.data.msg) response.data.msg = response.data.info;
    return response.data
  },
  error => {
    /*
    * 对接口请求失败进行统一处理
    */
    Message({
      message: error.message,
      type: "error",
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service
